home *** CD-ROM | disk | FTP | other *** search
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- sound_playMusic("music/rybky05.ogg")
- local pokus = getRestartCount()
-
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- if pokus < 3 then
- room.mzaval = 0
- elseif random(pokus) < 4 then
- room.mzaval = 0
- else
- room.mzaval = 1
- end
- room.vzaval = 0
- room.nezvladnu = 0
- room.lastu = 0
- room.matr = 0
- room.rozhovor = 500 + random(500 + pokus * 42)
- room.snm = 0
- room.nezv = 0
- room.uz = 0
- if random(pokus + 1) > 3 then
- room.chud = 1
- else
- room.chud = 0
- end
- room.vymena = 0
- room.pomv = 0
-
- return function()
- if no_dialog() then
- if isReady(small) and isReady(big) then
- if room.mzaval == 0 and small.X > 43 and not small:isLeft() then
- if random(game_getCycles()) < 100 then
- addm(4, "uts-m-otresy")
- end
- room.mzaval = 1
- end
- if room.vzaval == 0 and big.X > 43 and not big:isLeft() then
- if random(3 + pokus) < 4 then
- addv(2, "uts-v-projet0")
- else
- addv(2, "uts-v-projet1")
- end
- room.vzaval = 1
- room.mzaval = 1
- end
- if room.lastu == 0 and big.X < 7 and lastura.X < 3 and lastura.Y == 11 then
- room.lastu = 1
- addm(11, "uts-m-lastura")
- end
- if room.rozhovor <= game_getCycles() then
- room.rozhovor = room.rozhovor + 6666 + random(pokus * 42)
- addv(10, "uts-v-koraly")
- if pokus < 4 or random(6) > 0 then
- addm(10, "uts-m-tvorove")
- end
- if pokus == 1 or random(4) > 0 then
- addv(10, "uts-v-mikroskop")
- addm(10, "uts-m-zivocich")
- if random(3) > 0 then
- addm(10, "uts-m-zelvy")
- end
- if random(3) > 0 then
- addm(10, "uts-m-batyskaf")
- end
- end
- end
- if room.snm == 0 and matrace.X == 37 and (snek1.X > 40 and snek1.Y == 6 or snek2.X > 40 and snek2.Y == 6) then
- room.snm = 1
- addm(0, "uts-m-snek")
- end
- if room.nezv == 0 and (snek1.Y == 13 or snek2.Y == 13) then
- room.nezv = 1
- addm(2, "uts-m-nezvedneme")
- end
- if room.uz == 0 and (dvere.X > snek1.X or dvere.X > snek2.X) and dvere.Y == 10 then
- room.uz = 1
- addv(6, "uts-v-konecne")
- if random(pokus + room.chud * 6) < 4 then
- addm(7, "uts-m-chudak")
- end
- room.chud = 1
- end
- if room.chud == 0 and (snek1.dir ~= dir_no or snek2.dir ~= dir_no) and random(100) == 1 then
- room.chud = 1
- addm(5, "uts-m-chudak")
- end
- if room.vymena == 0 and matrace.X > 15 and matrace.X < 21 and xdist(matrace, snek1) == 0 and xdist(matrace, snek2) == 0 then
- pomb1 = snek1.Y + 1 == snek2.Y and snek2.Y + 1 == matrace.Y
- pomb2 = snek2.Y + 1 == snek1.Y and snek1.Y + 1 == matrace.Y
- if pomb1 or pomb2 then
- if room.pomv == 0 then
- room.pomv = 1
- room.vymena = 20 + random(300 + pokus)
- else
- room.pomv = 2
- end
- end
- end
- if room.pomv == 2 then
- room.vymena = -1
- room.pomv = 0
- addv(5, "uts-v-poradi")
- end
- end
- if room.vymena > 0 then
- room.vymena = room.vymena - 1
- end
- if room.matr == 0 and isReady(small) and dist(small, matrace) < 2 then
- room.matr = 1
- addm(7, "uts-m-matrace")
- end
- if room.nezvladnu == 0 and small:isOut() and isReady(big) and lastura.X == 11 then
- room.nezvladnu = 1
- addv(20, "uts-v-sam")
- end
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_lastura()
- return function()
- local anim_table = {
- [0] = function()
- if random(100) == 1 then
- lastura.afaze = 1
- end
- end,
- [1] = function()
- if random(10) == 1 then
- lastura.afaze = random(5)
- end
- end,
- [5] = function()
- lastura.afaze = 4
- end,
- [6] = function()
- if random(10) == 1 then
- lastura.afaze = random(2) + 2
- end
- end,
- }
- anim_table[2] = anim_table[1]
- anim_table[3] = anim_table[1]
- anim_table[4] = anim_table[1]
-
- switch(lastura.afaze)(anim_table)
-
- switch(lastura.dir){
- [dir_up] = function()
- lastura.afaze = 5
- end,
- [dir_down] = function()
- lastura.afaze = 0
- end,
- [dir_left] = function()
- lastura.afaze = 6
- end,
- [dir_right] = function()
- lastura.afaze = 1
- end,
- }
- lastura:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_snek1()
- return function()
- switch(snek1.afaze){
- [0] = function()
- if snek1.dir ~= dir_no then
- snek1.afaze = 1
- elseif random(50) == 1 then
- snek1.afaze = 2
- end
- end,
- [1] = function()
- if snek1.dir == dir_no and random(15) == 1 then
- snek1.afaze = 2
- end
- end,
- [2] = function()
- local choice = random(20)
- if choice == 1 then
- snek1.afaze = 1
- elseif 2 <= choice and choice <= 4 then
- snek1.afaze = 3
- end
- end,
- [3] = function()
- if random(5) == 1 then
- snek1.afaze = 0
- end
- end,
- }
- snek1:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_snek2()
- return function()
- switch(snek2.afaze){
- [0] = function()
- if snek2.dir ~= dir_no then
- snek2.afaze = 1
- elseif random(50) == 1 then
- snek2.afaze = 2
- end
- end,
- [1] = function()
- if snek2.dir == dir_no and random(15) == 1 then
- snek2.afaze = 2
- end
- end,
- [2] = function()
- local choice = random(20)
- if choice == 1 then
- snek2.afaze = 1
- elseif 2 <= choice and choice <= 4 then
- snek2.afaze = 3
- end
- end,
- [3] = function()
- if random(5) == 1 then
- snek2.afaze = 0
- end
- end,
- }
- end
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_lastura()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_snek1()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_snek2()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-